在使用 Istio 前, 需先準備 Kubernetes 環境,本篇會教你如何使用 Minikube, 讓你能在任何環境都能輕鬆架起 Kubernetes。
建置 Kubernetes 部屬環境時,主要是使用 Kubeadm 工具,但此工具設定複雜,對新手來說不易使用,本篇介紹的 Minikube 能夠在 macOS、Linux 及 Windows 快速建立起單節點的 Kubernetes Cluster ,接著就來實際安裝看看吧!
進入 minikube start 網站
在 Installation 頁面,根據自身環境點選按鈕
# 輸入從 minikube start 網站複製的指令
minikube version
(輸出結果)
minikube version: v1.26.1
commit: 62e108c3dfdec8029a890ad6d8ef96b6461426dc
若無成功,有可能是環境變數沒有匯入,可嘗試重新啟動 Terminal
使用 Minikube 之前,還需準備 Container 或 VM 的 Manager,如 Docker、Hyper-V、VirtualBox 等等,本篇會以 Docker 作為 Manager
Mac 與 Windows 選擇安裝 Docker Desktop,Linux 可選擇 Desktop 或是 Server 版本
設定
-> Resources
,調整好資源後點選 Apply & Restart
資源設定至少需 2 CPUs + 4 GB Memory
接著需安裝 kubectl (Kubernetes CLI 工具),可以先在 Terminal 下指令確認,若無此工具請到 Kubernetes tools 網站,根據教學安裝
kubectl version --short
(輸出結果)
Client Version: v1.24.2
Kustomize Version: v4.5.4
Server Version: v1.24.3
Docker 與 Kubectl 都準備完成後,就可以使用 Minikube 來建置 Kubernetes Cluster
minikube start --driver=docker --memory 4096
--driver=docker
: 使用 Dokcer 作為 Manager--memory 4096
配置 4GB RAM建置完成後,Minikube 會自動配置 Kubectl
kubectl cluster-info
(輸出結果)
Kubernetes control plane is running at https://127.0.0.1:50031
CoreDNS is running at https://127.0.0.1:50031/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
創建好 Kubernetes Cluster 後,測試基本功能是否運作正常。
kubectl run <name>
指令建立 Podkubectl run nginx --image=nginx --restart=Never
--image=nginx
: 使用 Nginx 作為 Image--restart=Never
不會自動重啟kubectl get pods
查看 Podskubectl get pods
(輸出結果)
# 等待到 Pod 建置完成
NAME READY STATUS RESTARTS AGE
nginx 0/1 ContainerCreating 0 4s
# Pod 建置完成
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 64s
kubectl port-forward <name> <server port>:<container port>
指令與 Pod 互動kubectl port-forward nginx 8080:80
8080:80
: 將主機 Port 8080 的流量轉移到 Container 的 Port 80# 在瀏覽器輸入
127.0.0.1:8080
kubectl delete pods <name>
刪除 Podkubectl delete pod nginx
(輸出結果)
pod "nginx" deleted
本篇我們使用 Minikube 快速建立起實驗環境,下一篇就會介紹如何將 Istio 安裝到 Kubernetes。
其實 minikube 也有內建 kubectl
不需要額外安裝,語法 minikube kubectl -- <command>
另外也建議將 minikube
做 shell completion: source <(minikube completion bash)
kubectl
的則是 source <(minikube kubectl -- completion bash)